package com.rentcars.mapper;

import com.rentcars.entity.Account;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface AccountMapper {

  int deleteByPrimaryKey(String uid);

  int insert(Account record);

  int insertSelective(Account record);

  Account selectByPrimaryKey(String uid);

  int updateByPrimaryKeySelective(Account record);

  int updateByPrimaryKey(Account record);

  /**
   * 查询所有内部用户账户信息
   *
   * @param account
   * @return 内部用户账户信息集合
   */
  List<Account> selectAllAccount(Account account);

  /**
   * 通过用户名查看用户
   *
   * @param username 用户名
   * @return 用户信息
   */
  Account selectAccountByUsername(String username);

  /**
   * 批量删除用户
   *
   * @param checkUid 用户编号
   * @return 删除条数
   */
  Integer deleteByPrimaryKeys(String[] checkUid);

  /**
   * 通过用户信息查询用户具体信息集合
   *
   * @param account 查询条件信息
   * @return 结果集
   */
  List<Account> selectAccountByAccount(Account account);

  /**
   * 删除用户时修改用户状态为0
   *
   * @param uid 用户id
   * @return 被影响的条数
   */
  Integer updateByAccountId(@Param("uid") String uid);

  /**
   * 改变该账户是否可用
   *
   * @param uid 启用账户id
   * @return 被影响的行数
   */
  Integer updateStateAccount(@Param("uid") String uid, @Param("userstate") Integer userstate);

  /**
   * 查询用户的具体信息和他的角色信息
   *
   * @param username 用户名
   * @return 用户信息
   */
  Account selectAccountRole(String username);

  /**
   * 查询用户盐值
   *
   * @param username 用户名
   * @return 盐值
   */
  String selectPwdSaltByUsername(String username);
}